package partTwo;
/* 本类用于测试final关键字*/
public class TestFinal {
    public static void main(String[] args) {
        Father f = new Father();
        f.work();
        Son s = new Son();
        s.work();
        System.out.println(s.a);
        // s.a = 100;  报错，不可以给被final修饰的变量a重新赋值
    }
}

/* 1.final可以用来修饰类吗？  可以
 *  被final 修饰的类是最终类，不可以被继承
 * 可以把final修饰的类看成树结构中的叶子节点*/
//1.定义父类
//3.测试类被final修饰
//final class Father{
class Father{
    /* 2.final可以用来修饰方法吗？ 可以
     * 被final修饰的方法是这个方法最终的实现，不可以被重写*/
    //4. 测试方法被final修饰
    //public final void work(){
    public void work(){
        System.out.println("在工厂里上班");
    }
}

//2.定义子类
//class Son extends Father{  报错，不可以继承一个被final修饰的类
class Son extends Father{
    /* 3.final可以用来修饰变量吗？
     *  被final修饰的是常量，值不可以被修改
     * 注意：定义常量时必须要赋值，不赋值就报错*/
    final int a=10 ;

    //5.重写父类方法
    public void work(){
        System.out.println("在家玩游戏");
    }
}